﻿namespace Patterns.Interfaces
{
    public interface IAggregator
    {
        void Initialize();
        void Accumulate(object accumulate);
        void Dissipate(object dissipate);
        object Terminate();
    }

    public interface IAggregator<TAccumulate, TTerminate> : IAggregator
    {
        void Accumulate(TAccumulate accumulate);
        void Dissipate(TAccumulate dissipate);
        new TTerminate Terminate();
    }
}
